11.NDP协议分析与实践 | 您所在的位置:网站首页 › 报文 格式 › 11.NDP协议分析与实践 |
4.IPv4协议分析与实践
百里奔跑: EINVAL 是系统头文件定义的 [code=csharp] // common.h #ifndef __common_h_ #define __common_h_ #include #include #include #define handle_error_en(en, msg) \ do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0) #define handle_error(msg) \ do { perror(msg); exit(EXIT_FAILURE); } while (0) #endif /* __common_h_ */ [/code] 4.IPv4协议分析与实践Suzhanyu_4068: 用make指令运行还是编译出了一些错误,我想加上common.h头文件再试试,麻烦博主帮一下啦! 4.IPv4协议分析与实践Suzhanyu_4068: 谢谢博主!但是我注释掉common.h之后提示了参数EINVAL未定义,在IPv4的错误处理函数中使用,猜测是在这个头文件中定义了。。 4.IPv4协议分析与实践百里奔跑: 对,在 Linux 运行,common.h 没什么东西,只有简单处理错误宏, cksum.h 内容 ```c uint16_t cksum(uint16_t *addr, int len) { int left = len; uint32_t sum = 0; uint16_t *w = addr; uint16_t check_sum = 0; // 以 2 字节为单位累加 while (left > 1) { sum += *w++; left -= 2; } // 为奇数字节时, 转换最后一个字节, 继续累加 if (left == 1) { *(unsigned char *) (&check_sum) = *(unsigned char *) w; sum += check_sum; } sum = (sum >> 16) + (sum & 0xFFFF); sum += (sum >> 16); check_sum = ~sum; // 取反得到校验和 return check_sum; } ``` 4.IPv4协议分析与实践Suzhanyu_4068: 博主你好!虚心求教,请问是运行在Linux上的吗?cksum.h和common.h这两个头文件也是系统自带的嘛 |
CopyRight 2018-2019 实验室设备网 版权所有 |